/**
 * 二叉树的最小深度
 * 对于根节点，如果为null，返回0
 * 和二叉树的最大深度不同，由于必须是叶子节点才能开始计数
 * 如果是非叶子节点并且一个子树不为null，一个子树为null，那么就不能让null节点返回0
 * 否则会影响到计算最小值
 */
class Solution2 {
    public int minDepth(TreeNode root) {
        if(root == null) {
            return 0;
        }
        if(root.left == null && root.right == null) {
            return 1;
        }
        //当方法返回0时，如果是根节点，那么就不会到这里
        //如果不是根节点，就表示该节点的某个子树为null
        //并且由于没有从两个子树都为null的if语句返回，说明该节点不是一个叶子节点，0不能使用
        //直接设一个较大值
        int left = minDepth(root.left);
        if(left == 0) {
            left = 10000;
        }
        int right = minDepth(root.right);
        if(right == 0) {
            right = 10000;
        }
        return Math.min(left, right) + 1;
    }
}